package com.wargameproject.unite;

import com.wargameproject.Partie;

public abstract class UniteTerrestreNormale extends UniteTerrestre {

	public void attaquer(Unite unit) {
		int bonusAttaque;
		float bonusDefense;
		if(this.position.presenceBase()) {
			bonusAttaque = this.position.base.bonusAttaque;
		}
		else {
			bonusAttaque = this.position.terrain.bonusAttaque;
		}
		if(unit.position.cliquableAttaque && this.peutAttaquer) {
			if (!unit.volant){
				bonusDefense = unit.position.terrain.protection;
			}
			else {
				bonusDefense = 0;
			}
			unit.vie = unit.vie - (int)Math.ceil((this.attaque+bonusAttaque) * this.vie/10 * (100-unit.armureSurNormal)/100 * (100-bonusDefense)/100);
			if(unit.vie>0) {
				unit.riposter(this);
			}
			else {
				unit.position.unite = null;
			}
			this.peutAttaquer = false;
			this.peutBouger = false;
			Partie.brouillardDeGuerre();
		}
	}
	
	public void riposter(Unite unit) {
		int bonusAttaque;
		float bonusDefense;
		if(this.position.presenceBase()) {
			bonusAttaque = this.position.base.bonusAttaque;
		}
		else {
			bonusAttaque = this.position.terrain.bonusAttaque;
		}
		if(this.peutAttaquer && this.position.distance(unit.position)<=this.porteeAttaque) {
			if (!unit.volant){
				bonusDefense = unit.position.terrain.protection;
			}
			else {
				bonusDefense = 0;
			}
			unit.vie = unit.vie - (int)Math.ceil((this.attaque+bonusAttaque) * this.vie/10 * (100-unit.armureSurNormal)/100 * (100-bonusDefense)/100);
			this.peutAttaquer = false;
			this.peutBouger = false;
			if(unit.vie<=0) {
				unit.position.unite = null;
			}
		}
	}
}
